import { FormSchema } from '@/components/Form';
import { defRangeShortcuts } from '@/utils/dateUtil';
import { cloneDeep } from 'lodash-es';
import { CascaderOption } from 'naive-ui';
import { ref } from 'vue';

export class State {
  public id = 0; // 主键ID
  public memberId = 0; // 用户ID
  public userName = ''; // 收货人姓名
  public postalCode = ''; // 邮编
  public provinceName = ''; // 省/自治区/直辖市
  public cityName = ''; // 市
  public countyName = ''; // 县/区
  public streetName = ''; // 街道
  public detailInfo = ''; // 详细收货地址信息（包括街道地址）
  public nationalCode = ''; // 国家码
  public telNumber = ''; // 收货人手机号码
  public createdAt = ''; // 创建时间
  public updatedAt = ''; // 更新时间
  public pathValues: Array<CascaderOption | null> = [];

  constructor(state?: Partial<State>) {
    if (state) {
      Object.assign(this, state);
    }
  }
}

export function newState(state: State | Record<string, any> | null): State {
  if (state !== null) {
    if (state instanceof State) {
      return cloneDeep(state);
    }
    return new State(state);
  }
  return new State();
}

// 表单验证规则
export const rules = {
  memberId: {
    required: true,
    trigger: ['blur', 'input'],
    type: 'number',
    message: '请输入用户ID',
  },
  userName: {
    required: true,
    trigger: ['blur', 'input'],
    type: 'string',
    message: '请输入收货人姓名',
  },
  // provinceName: {
  //   required: true,
  //   trigger: ['blur', 'input'],
  //   type: 'string',
  //   message: '请输入省/自治区/直辖市',
  // },
  // cityName: {
  //   required: true,
  //   trigger: ['blur', 'input'],
  //   type: 'string',
  //   message: '请输入市',
  // },
  detailInfo: {
    required: true,
    trigger: ['blur', 'input'],
    type: 'string',
    message: '请输入详细收货地址信息',
  },
  telNumber: {
    required: true,
    trigger: ['blur', 'input'],
    type: 'string',
    message: '请输入收货人手机号码',
  },
};

// 表格搜索表单
export const schemas = ref<FormSchema[]>([
  // {
  //   field: 'id',
  //   component: 'NInputNumber',
  //   label: '主键ID',
  //   componentProps: {
  //     placeholder: '请输入主键ID',
  //     onUpdateValue: (e: any) => {
  //       console.log(e);
  //     },
  //   },
  // },
  {
    field: 'userName',
    component: 'NInput',
    label: '收货人',
    componentProps: {
      placeholder: '请输入收货人姓名',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
  {
    field: 'telNumber',
    component: 'NInput',
    label: '手机号码',
    componentProps: {
      placeholder: '请输入收货人手机号码',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
  {
    field: 'createdAt',
    component: 'NDatePicker',
    label: '创建时间',
    componentProps: {
      type: 'datetimerange',
      clearable: true,
      shortcuts: defRangeShortcuts(),
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
  {
    field: 'adminMemberId',
    component: 'NInput',
    label: '用户ID',
    componentProps: {
      placeholder: '请输入用户ID',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
  {
    field: 'adminMemberNickname',
    component: 'NInput',
    label: '微信昵称',
    componentProps: {
      placeholder: '请输入微信昵称',
      onUpdateValue: (e: any) => {
        console.log(e);
      },
    },
  },
]);

// 表格列
export const columns = [
  // {
  //   title: '主键ID',
  //   key: 'id',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '用户ID',
  //   key: 'memberId',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '微信昵称',
  //   key: 'adminMemberNickname',
  //   align: 'left',
  //   width: -1,
  // },
  {
    title: '收货人姓名',
    key: 'userName',
    align: 'left',
    width: 100,
  },
  {
    title: '收货人手机号码',
    key: 'telNumber',
    align: 'left',
    width: 150,
  },
  {
    title: '省/市/区/街道',
    key: 'provinceName',
    align: 'left',
    width: 270,
    render(row: State) {
      return row.provinceName + " " + row.cityName + " " + row.countyName + " " + row.streetName;
      // return row.provinceName + row.cityName + row.countyName + row.streetName;
    },
  },
  // {
  //   title: '省/自治区/直辖市',
  //   key: 'provinceName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '市',
  //   key: 'cityName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '县/区',
  //   key: 'countyName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '街道',
  //   key: 'streetName',
  //   align: 'left',
  //   width: -1,
  // },
  {
    title: '详细收货地址',
    key: 'detailInfo',
    align: 'left',
    width: -1,
  },
  // {
  //   title: '创建时间',
  //   key: 'createdAt',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '更新时间',
  //   key: 'updatedAt',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '管理员ID',
  //   key: 'adminMemberId',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '真实姓名',
  //   key: 'adminMemberRealName',
  //   align: 'left',
  //   width: -1,
  // },
];

// 表格列，所有
export const columnsAll = [
  {
    title: '主键ID',
    key: 'id',
    align: 'left',
    width: 80,
  },
  {
    title: '用户ID',
    key: 'memberId',
    align: 'left',
    width: 100,
  },
  {
    title: '微信昵称',
    key: 'adminMemberNickname',
    align: 'left',
    width: 150,
  },
  {
    title: '收货人姓名',
    key: 'userName',
    align: 'left',
    width: 100,
  },
  {
    title: '收货人手机号码',
    key: 'telNumber',
    align: 'left',
    width: 150,
  },
  {
    title: '省/市/区/街道',
    key: 'provinceName',
    align: 'left',
    width: 270,
    render(row: State) {
      return row.provinceName + " " + row.cityName + " " + row.countyName + " " + row.streetName;
      // return row.provinceName + row.cityName + row.countyName + row.streetName;
    },
  },
  // {
  //   title: '省/自治区/直辖市',
  //   key: 'provinceName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '市',
  //   key: 'cityName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '县/区',
  //   key: 'countyName',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '街道',
  //   key: 'streetName',
  //   align: 'left',
  //   width: -1,
  // },
  {
    title: '详细收货地址',
    key: 'detailInfo',
    align: 'left',
    width: -1,
  },
  {
    title: '创建时间',
    key: 'createdAt',
    align: 'left',
    width: 180,
  },
  // {
  //   title: '更新时间',
  //   key: 'updatedAt',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '管理员ID',
  //   key: 'adminMemberId',
  //   align: 'left',
  //   width: -1,
  // },
  // {
  //   title: '真实姓名',
  //   key: 'adminMemberRealName',
  //   align: 'left',
  //   width: -1,
  // },
];